﻿<pre>
知识点一：正则表达式的概念
	RegExp:Regular Expression 翻译：规则的表示方法。
	正则表达式：就是按指定的规则进行对比匹配
	语法格式一：
		var expression = new RegExp("pattern","flags");
		示例：var p = new RegExp("php","i");	
	语法格式二：与格式一完全等价，是格式一的简写风格
		var expression = / pattern / flags;
		示例：var p = /php/i;

	其中模式部分可以任何简单或复杂的正则表达式，可以包含字符类，限定符，分组，向前查找及反向引用。
	每个表达式都可以带一个或多个标志，用以标明正则表达式的行为。
	JS正则表达式的匹配模式支持以下3个标志。
		g：(global)表示全局模式.即模式被用于所有字符串，而不是在发现第一个匹配后就立即停止。
			注意：g模式与test与exec方法合作达不到目标效果，
			需要与字符串对象的match\search\replace\split方法协同。		
		i：(case-insensitive)表示不区分大小写.
			即在确定匹配时忽略模式与字符串的大小写。
		m：（multiline）表示多行模式.
			即在到达一行文本的末尾时还会继续查找下一行中是否存在模式匹配的项。
	因此：一个正则表达式就是一个模式与以上三个标志的组合体。
<script type="text/javascript">
 
	
var p = /cat/;
var str = "my cat";
var rs = p.exec(str);
echo(rs);			//输出 cat
echo(rs.index);		//输出 3  在索引为3的位置找到cat
echo(rs.input);		//输出 my cat
// 代码示例二 
var p1 = new RegExp("cat");
var str = "my cat";
var rs = p1.test(str);
echo(rs);			//输出 true

/*
代码示例三:等价的写法
	var p = new RegExp("cat","i");
	var p = /cat/i;
特别注意错误的写法：
	var p = "/cat/i";
	var p = new RegExp(cat,i);
*/
 

echo("---------RegExp的实例方法---------");
/* 
知识点二：正则表达式实例方法
在JS的正则表达式匹配中共有两个方法分别是 exec() 与test() 方法。
语法格式一：
	pattern.exec(str);
说明：匹配模式.exec(要匹配的字符串)
	如果字符串与模式匹配（也就是从字符串中能够查找到满足模式的部分），则以数组的形式返回匹配部分，
	并包含两个额外的属性index和input,其中index表示匹配项在字符串中首次出现的位置，
	而input表示被检测的字符串。
	如果没有匹配则返回null

语法格式二：
	pattern.test(str) 
说明：匹配模式.test(要匹配的字符串) 与exec不同的是返回值，如果匹配成功返回true匹配不成功返回false
因此test()方法主要用于if语句中。
*/

var p = /php/;
var str = "phpdl";
var rs = p.test(str);
echo(rs);			//输出true，匹配成功
 

/*
知识点三：元字符
正则表达式元字符包含：()[]{}\^$|?*+.
这些字符有特殊用途，如果想匹配元字符必须对其进行转义。
*/

/*
知识点四：更多案例
*/

var p = /[0-9]{11}/;
var t1 = "18955113220";
var t2 = "1895511322";
echo(p.test(t1));	//输出：true
echo(p.test(t2));  //输出：false

//多行模式标志m应用案例 
var p = /js$/m; //说明：这里如果没有m标志那么下面的匹配将不成功
var str = "my\njs\nstudy";
document.writeln(p.test(str));//输出 true.


/* 
匹配汉字：^[\u4e00-\u9fa5]+$ 
document.writeln(parseInt("4e00",16)); //输出： 19968
\u代码unicode编码
4e00是16进制数字 等于十进制的 19968 
9fa5是16进制数字 等于十进制的 40869 
*/

/*
知识点五：进一步学习，请参阅精讲PHP的正则表达式语法
例如：
[1-9]+
[1-9]*
[1-9]?
[1-9]{m,n}
^[1-9]
[1-9]$
等元字符的含义见PHP正则表达式。
*/


//封装写函数
function echo(  str, flag ){
 	if(arguments[1]==1){
		document.write(arguments[0]);
	}
	else{
		document.writeln(arguments[0]);
	}
	
} 
</script>
</pre>